scsi: hisi_sas: Fix spin lock management in slot_index_alloc_quirk_v2_hw()
authorJohn Garry <john.garry@huawei.com>
Tue, 16 Oct 2018 15:00:36 +0000 (23:00 +0800)
committerSalvatore Bonaccorso <carnil@debian.org>
Thu, 18 Jul 2019 22:23:17 +0000 (23:23 +0100)
Currently a spin_unlock_irqrestore() call is missing on the error path,
so add it.

Reported-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: John Garry <john.garry@huawei.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
Gbp-Pq: Topic bugfix/arm64/huawei-taishan
Gbp-Pq: Name 0008-scsi-hisi_sas-Fix-spin-lock-management-in-slot_index.patch

drivers/scsi/hisi_sas/hisi_sas_v2_hw.c

index 58a564c75a35cb6664ce599e7ddb24c0b4892fb4..77a85ead483e098a8e1d837c8130bfb873dc3671 100644 (file)
@@ -806,8 +806,10 @@ slot_index_alloc_quirk_v2_hw(struct hisi_hba *hisi_hba,
        while (1) {
                start = find_next_zero_bit(bitmap,
                                        hisi_hba->slot_index_count, start);
-               if (start >= end)
+               if (start >= end) {
+                       spin_unlock_irqrestore(&hisi_hba->lock, flags);
                        return -SAS_QUEUE_FULL;
+               }
                /*
                  * SAS IPTT bit0 should be 1, and SATA IPTT bit0 should be 0.
                  */